﻿#include <iostream>  
#include <string>  
#include <map>  
using namespace std;  
  
  
typedef map<int, string> map_power;  
  
  
//题目中0 < n <= 25  
int GetMaxLessEqu(int n)  
{  
    if (0 == (n & (n-1))) return n;  
  
    int ret = 1;  
    while (ret < n) ret<<=1;  
    return ret>>1;  
}  
  
  
int GetInteger(string& str)  
{  
    int radix = 0;  
  
    const int pos = str.find('.');  
    if (string::npos != pos)//有小数点  
    {  
        while ('0' == str[str.size()-1]) str.erase(str.size()-1, 1);  
        str.erase(pos, 1);  
        radix = str.size() - pos;  
    }  
    while ('0' == str[0]) str.erase(0, 1);  
  
    return radix;  
}  
  
  
//C = A*B  
void mul(string& C, const string& A, const string& B)  
{  
    int tail = A.size() + B.size()-1;  
  
    C.resize(tail+1);  
    C.assign(C.size(), 0);  
    for (int i = B.length()-1; i >= 0; i--)  
    {  
        for (int j = A.length()-1; j >= 0; j--)  
        {  
            const int pos = tail - (A.length()-1-j) - (B.length()-1-i);  
            const int ret = (B[i]-'0')*(A[j]-'0');  
            C[pos] += ret;  
            C[pos-1] += C[pos]/10;  
            C[pos] %= 10;  
        }  
    }  
    for (int i = 0; i < C.size(); i++) C[i] += '0';  
    while ('0' == C[0]) C.erase(0, 1);  
}  
  
  
void output(string& str, int radix, int n)  
{  
    if (radix > 0)  
    {  
        int i;  
        radix *= n;  
        int diff = (int)str.size() - radix;  
        if (diff > 0)  
        {  
            for (i = 0; i < str.size()-radix; i++) cout<<str[i];  
            cout<<'.';  
            for (; i < str.size(); i++) cout<<str[i];  
        }  
        else  
        {  
            cout<<'.';  
            for (i = 0; i < radix-str.size(); i++) cout<<'0';  
            for (i = 0; i < str.size(); i++) cout<<str[i];  
        }  
    }  
    else cout<<str;  
    cout<<endl;  
}  
  
  
int MultiMain2(int argc,char **argv)  
{  
#ifdef FILEIO
	freopen("in.txt","r",stdin); 
	freopen("out.txt","w",stdout); 
#endif
    int n;  
    string r;  
  
    while (cin>>r>>n)  
    {  
        const int nBackup = n;  
        string digit = r;  
        int radix = GetInteger(digit);  
        int maxLessEqu = GetMaxLessEqu(n);  
        map_power powVal;  
        powVal[1] = digit;  
        string cur = digit, ret = digit;  
        for (int i = 2; i <= maxLessEqu; i*=2)   
        {  
            mul(ret, cur, cur);  
            powVal[i] = cur = ret;  
        }  
        if (maxLessEqu != n)  
        {  
            cur = powVal[maxLessEqu];  
            while (0 != n)  
            {  
                n -= maxLessEqu;  
                if (0 == (n & (n-1)))//n为2的幂  
                {  
                    mul(ret, cur, powVal[n]);  
                    break;  
                }  
                else  
                {  
                    mul(ret, cur, powVal[maxLessEqu/=2]);  
                    cur = ret;  
                }  
            }  
        }  
        output(ret, radix, nBackup);  
    }  
#ifdef FILEIO
	fclose(stdin);
	fclose(stdout);
#endif

    return 0;  
} 